package iD220711010131;

import java.util.Scanner;


/*

:GamingForces

每个test2秒的时间限制

每个测试的内存限制为256兆字节

inputstandard输入
outputstandard输出
Monocarp正在玩电脑游戏。他要杀死n个怪物，第i个怪物有他的生命值。
Monocarp的角色有两个咒语，他可以任意施放任意次数(可能是零次)和任意顺序:
选择两个活着的怪物，将它们的生命值降低1;
选择一个怪物并杀死它。
当怪物的生命值变为0时，它就会死亡。
为了杀死所有的怪物，Monocarp应该执行的最小施法次数是多少?
输入
第一行包含一个整数t(1≤t≤104)——测试用例的数量。
每个测试用例的第一行包含一个整数n(1≤n≤100)——怪物的数量。
第二行包含n个整数h1,h2，…，hn(1≤hi≤100)-每个怪物的生命值。
n除以所有测试用例的和不超过2*10**4。
输出
对于每个测试用例，打印一个整数——Monocarp为了杀死所有怪物应该执行的最小施法次数。
3
4
1 2 1 2
3
2 4 2
5
1 2 3 4 5

3
3
5


 */


public class MainKill2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        while(t-- > 0) {
            int n = sc.nextInt();
            int[] hp = new int[n];
            int count = 0;
            for(int i = 0; i < n; i++) {
                hp[i] = sc.nextInt();
            }for(int i = 0; i < n; i++) {
                if(hp[i] >= 2) {
                    hp[i] = 0;
                    count++;
                }
            }
            while(true) {
                boolean flag = true;
                for(int i = 0; i < n; i++) {
                    if(hp[i] != 0) {
                        flag = false;
                    }
                }if(flag == true) {
                    break;
                }else {
                    int two = 0;
                    for(int i = 0; i < n; i++) {
                        if(hp[i] == 1) {
                            hp[i] = 0;
                            two++;
                        }if(two == 2) {
                            break;
                        }
                    }count++;
                }
            }System.out.println(count);
        }
    }

}
